<#assign className = table.className>
<#assign classNameLower = className?uncap_first>
package ${basePackage}.service;

import ${basePackage}.dto.${table.classNameLower}.${table.className}SelectQueryResponseDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}SelectQueryRequestDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}FindQueryResponseDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}FindQueryRequestDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}InsertRequestDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}UpdateRequestDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}RequestDto;
import ${basePackage}.dto.${table.classNameLower}.${table.className}DeleteRequestDto;
import java.util.List;

/**
 * <p>
 * ${table.remark} 服务层接口
 * </p>
 *
 * @author wangjin
 * @classname: ${className}
 * @description: ${table.remark} 服务层
 * @towork: none
 * @version: 1.0.0
 * @since ${.now?string('yyyy/MM/dd HH:mm')}
 */
public interface ${table.className}Service {

        /**
         * ${table.remark} 列表查询
         *
         * @param ${table.className?uncap_first}SelectQueryRequestDto ${table.remark} 服务层查询请求封装对象
         * @return ${table.className}SelectQueryResponseDto集合
         */
        List<${table.className}SelectQueryResponseDto> selectList(${table.className}SelectQueryRequestDto ${table.className?uncap_first}SelectQueryRequestDto);

        /**
         * ${table.remark} 根据唯一索引查询
         *
         * @param ${table.className?uncap_first}FindQueryRequestDto ${table.remark} 服务层查询请求封装对象
         * @return ${table.className}FindQueryResponseDto
         */
        ${table.className}FindQueryResponseDto findByUniqueKey(${table.className}FindQueryRequestDto ${table.className?uncap_first}FindQueryRequestDto);

        /**
         * ${table.remark} 根据主键查询数据
         *
         * @param ${table.className?uncap_first}FindQueryRequestDto ${table.remark} 服务层查询请求封装对象
         * @return ${table.className}FindQueryResponseDto
         */
        ${table.className}FindQueryResponseDto findByPrimaryKey(${table.className}FindQueryRequestDto ${table.className?uncap_first}FindQueryRequestDto);


        /**
         * ${table.remark} 新增
         *
         * @param ${table.className?uncap_first}InsertRequestDto ${table.remark} 服务层插入请求封装对象
         * @return 受影响行数
         */
        int insert(${table.className}InsertRequestDto ${table.className?uncap_first}InsertRequestDto);

        /**
         * ${table.remark} 根据主键更新
         *
         * @param ${table.className?uncap_first}UpdateRequestDto
         * @return 受影响行数
         */
        int updateByPrimaryKey(${table.className}UpdateRequestDto ${table.className?uncap_first}UpdateRequestDto);

        /**
         * ${table.remark} 根据条件更新
         *
         * @param ${table.className?uncap_first}UpdateRequestDto ${table.remark} 服务层更新请求封装对象
         * @return 受影响行数
         */
        int updateByCondition(${table.className}UpdateRequestDto ${table.className?uncap_first}UpdateRequestDto);

        /**
         * ${table.remark} 根据主键删除数据
         *
         * @param ${table.className?uncap_first}DeleteRequestDto ${table.remark}实体类
         * @return 受影响行数
         */
        int delete(${table.className}DeleteRequestDto ${table.className?uncap_first}DeleteRequestDto);

        /**
         * ${table.remark} 根据主键批量删除数据
         *
         * @param ${table.className?uncap_first}DeleteRequestDtoList ${table.remark}实体类
         * @return 受影响行数
         */
        int deleteByBatch( List<${table.className}DeleteRequestDto> ${table.className?uncap_first}DeleteRequestDtoList);
}
